const http=require('http');
const chalk = require('chalk');
const path=require('path');

const conf=require('./config/defaultConfig');
const route=require('./helper/route')
const openUrl=require('./helper/openUrl')

class Server{
	constructor (config){
		this.conf=Object.assign({},conf,config);
	}

	start(){
		const server = http.createServer((req,res)=>{
			const filePath=path.join(this.conf.root,req.url);
			console.log(filePath);
			route(req,res,filePath,this.conf);

		});

		server.listen(this.conf.port,this.conf.hostname,()=>{
			const addr=`http://${this.conf.hostname}:${this.conf.port}`;
			console.info(`server start at ${chalk.green(addr)}`)
			openUrl(addr);
		});
	}
}

module.exports=Server;


// const server = http.createServer((req,res)=>{
// 	const filePath=path.join(conf.root,req.url);
// 	console.log(filePath);
// 	route(req,res,filePath);
//
//
// 	// fs.stat(filePath,(err,stats)=>{
// 	// 	if(err){
// 	// 		res.statusCode=404;
// 	// 		res.setHeader('Content-type','text/plain');
// 	// 		res.end('not found');
// 	// 		return ;
// 	// 	}
// 	//
// 	// 	if(stats.isFile()){
// 	// 		res.statusCode=200;
// 	// 		res.setHeader('Content-type','text/plain');
// 	// 		//相应太慢
// 	// 		// fs.readFile(filePath,(err,data)=>{
// 	// 		// 	res.end(data);
// 	// 		// });
// 	// 		fs.createReadStream(filePath).pipe(res);
// 	// 	}else if(stats.isDirectory()){
// 	// 		fs.readdir(filePath,(err,files)=>{
// 	// 			res.statusCode=200;
// 	// 			res.setHeader('Content-type','text/plain');
// 	// 			res.end(files.join(','))
// 	// 		})
// 	// 	}
// 	// })
// 	// res.setHeader('Content-type','text/html');
// 	// res.write('<html>');
// 	// res.write('<body>');
// 	// res.write('<h2>Hello Word!</h2>');
// 	// res.write('</body>');
// 	// res.write('</html>');
// 	// res.write(filePath);
//
// 	//res.end();
// });
//
// server.listen(conf.port,conf.hostname,()=>{
// 	const addr=`http://${conf.hostname}:${conf.port}`;
// 	console.info(`server start at ${chalk.green(addr)}`)
// });